// AST.h - AST节点定义
#pragma once
#include <string>
#include <vector>
using namespace std;

// 新增AST节点定义
class ASTNode {
    public:
        string type;       // 节点类型（如 "program", "stmt", "ID" 等）
        string value;      // 节点的值（终结符的具体值，非终结符可空）
        vector<ASTNode*> children; // 子节点列表
    
        /* 
        Args:
            t: 节点类型
            v: 节点值（可选，默认为空字符串）
        */
        ASTNode(string t, string v = "") : type(t), value(v) {}
        
        ~ASTNode() {
            for (auto child : children) delete child;
        }
};